using UnityEngine;

public class IdleState : IState
{
    private FSM manager;
    private Parameter parameter;

    private float idleTime;

    //在构造函数中获取到状态机的引用和参数
    public IdleState(FSM manager)
    {
        this.manager = manager;
        parameter = manager.parameter;
    }

    public void OnEnter()
    {
        manager.animator.Play("Idle");  //进入时，播放idle动画
    }

    //在update中，根据不同的条件，切换不同的状态，例如这里idle时间到了，切换为patrol状态
    public void OnUpdate()
    {
        idleTime += Time.deltaTime;
        if (idleTime>parameter.idleTime)
        {
            manager.TransitionState(StateType.Patrol);//切换到巡逻状态
        }
        
        if (parameter.isHit)
        {
            manager.TransitionState(StateType.Hit);//切换到受攻击状态
        }
        if (null !=parameter.playerTrans && parameter.playerTrans.position.x>parameter.chasePoints[1].position.x
                                      &&parameter.playerTrans.position.x<parameter.chasePoints[0].position.x)
        {
            manager.TransitionState(StateType.React);//切换到发现敌人状态
        }
    }

    //在exit中，更新参数
    public void OnExit()
    {
        idleTime = 0;
    }
}
